# 将数据保存到sql数据库中
import pymysql

class Connect:
        def __init__(self,user='root',password='mysql',database=None,charset='utf8'):
                self.user = user #用户名
                self.password = password #密码
                self.database = database #数据库名
                self.charset = charset #设置数据库的编码

        # 主方法
        def save_mysql(self, sql):
                # 建立连接
                conn = pymysql.connect(user=self.user, password=self.password, database=self.database, charset=self.charset)
                cur = conn.cursor()  # 建立游标对象
                cur.execute(sql)  # 执行sql语句
                conn.commit()  # 提交
                print("数据写入成功")
                cur.close()  # 关闭游标对象
                conn.close()  # 关闭数据库连接
        # 建立连接
        def connect_mysql(self):
                # 建立连接
                dict = {}
                conn = pymysql.connect(user=self.user, password=self.password, database=self.database,
                                       charset=self.charset)
                cur = conn.cursor()  # 建立游标对象
                dict['connect'] = conn
                dict['cursor'] = cur
                return dict
        # 执行sql语句操作数据库
        def execute_mysql(self,sql):
                dict = self.connect_mysql()
                dict['cursor'].execute(sql)       #执行sql语句

        # 在数据库中创建新表
        def create_table(self,table_name,structure=None):
                # table_name 要创建的表名 structure 表结构 例如：id int
                # create table table1(id int,name varchar(64));
                #{id,int}
                if isinstance(structure, dict):#判断用户传进来的是否是字典
                        for key,value in structure.items():
                                pass
                # 建立连接
                conn = pymysql.connect(user=self.user, password=self.password, database=self.database,
                                       charset=self.charset)
                cur = conn.cursor()  # 建立游标对象
                sql = "create table %s();" %(repr(table_name))
                cur.execute(sql)  # 执行sql语句
                conn.commit()  # 提交
                print(f"{table_name}表创建成功")
                cur.close()  # 关闭游标对象
                conn.close()  # 关闭数据库连接
        # 提交数据库
        def commit_mysql(self):
                dict = self.connect_mysql()
                dict['connect'].commit()  # 提交
                print("数据写入成功")
                dict['cursor'] = dict['cursor'].close()  # 关闭游标对象
                dict['connect'].close()  # 关闭数据库连接